﻿using System.Collections.Generic;
using Grundy.Common;
using Grundy.CryptographicServices;
using Grundy.Entity;
using Grundy.Message;

namespace Grundy.Licensing.Server
{
    public interface IApplication
    {
        CryptographicServicesProvider ServerCryptographicServicesProvider { get; }
        CryptographicServicesProvider EntitlementServerCryptographicServicesProvider { get; }
        IdentifierCollection NodeIdentifiers { get; }
        ExecutionCounter ExecutionCounter { get; }
        LicenseSessionStore LicenseSessionStore { get; }
        LicenseServer LicenseServer { get; }
        LicenseStore LicenseStore { get; }
        ServerConfiguration ServerConfiguration { get; }
        IEnumerable<LicenseData> GetLicensesData();
        LicenseServiceFactory GetLicenseServiceFactory();
        LicensingStrategyFactory LicensingStrategyFactory { get; }
        CustomerCryptographicServicesProvider GetCustomerCryptographicServicesProvider(string providerString);
    }
}